package JavaSE_Senior;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;

public class GenericParadigm {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        /**
         * 泛型，编译时对类型的限制
         *
         * 泛型类
         * 泛型方法
         *
         * 运行时不起作用，反射在运行时
         *
         */

        ArrayList<String> list = new ArrayList<String> ();

        list.add ("L");
//        list.add (10);

        //获取集合的类对象
        Class<ArrayList> arrayListClass = ArrayList.class;
        //获取add方法
        Method add = arrayListClass.getMethod ("add", Object.class);
        //invoke执行方法
        add.invoke (list,10);

        System.out.println (list);
        //[L, 10]

        print (10);
        print ("l");


    }
    //泛型方法

    public static <T extends Object> void print(T x){
//    public static <T extends Student> void print(T x){
        //如果这里是Student，那么表示只可以使用Student类的属性
        System.out.println (x);
    }
}
